문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 인터넷 공유기 (문단 편집) == 포트 포워딩과 최대 연결 클라이언트 개수 == 라우터는 다른 라우터를 경유해서 패킷을 보내는 게 당연히 가능하다. 따라서 공유기에 공유기를 또 물려서 작동시켜도 잘 작동한다.[* 단, 동일 제조사 간의 공유기를 유선으로 서로 연결할 시에는 각각의 공유기에서 기본 게이트웨이 주소를 서로 다르게 지정해줘야되고, 공유기 간에 네트워크 대역이 동일한 경우에는 '''외부 인터넷과 직접 연결된 공유기 1대에서만''' DHCP 서버를 실행시켜야된다. [[ipTIME]] 제품을 2개를 연결한다고 가정하면 192.168.0.1 IP가 2개가 있으므로 사설 IP간에 충돌이 발생할 수 있어, 1개의 공유기에서 192.168.0.1을 다른 사설 IP 주소로 바꿔줘야된다. 즉, 공유기 간에 기본 게이트웨이 주소가 달라야된다. 단, 유선 MESH 구성인 경우에는 앞서 설명한 방법이 아닌 제조사에서 알려주는 설정법대로 하면 된다.] [[IP]] 항목을 보면 알겠지만 IPv4 주소는 고갈됐다고 하는데 이런 식으로 공유기를 문어발처럼 확장하면 영원히 IP 주소가 고갈될 일이 없는 게 아닐까 생각할 수 있지만, 결론부터 말하자면 공유기에서 할당하는 사설 IP로 인한 이유로는 '''고갈되지 않는다.''' IPv4 는 최대 4,294,967,296 개의 IP를 수용 할 수 있다. 공인 IP를 받는 Client 의 숫자가 42억개가 넘는 것이 고갈되는 근본적인 이유가 되는 것일 뿐, 공유기 아래 수만 개의 Client 가 물리더라도 1개의 공인IP를 사용한다는 개념으로 이해 할 수 있다. 공유기는 '''포트 포워딩'''이라는 기법으로 작동한다.[* 실제 네트워크를 연구하는 곳에서는 IP주소를 변경시키는 것을 NAT, 포트 넘버를 변경시키는 것을 PAT(Port Address Translation)라고 한다. 즉, 포트 포워딩 = PAT. 자세한 동작원리를 알고싶으면 NAT나 PAT로 검색하자.] 하나의 공인 IP에서 사용할 수 있는 포트의 숫자는 65,535개인데 네트워크 통신을 하는 모든 프로그램은 각자 최소 하나 이상의 포트를 점유하고 있다. 그런데 하나의 컴퓨터는 보통 수십 개 이상의 네트워크 포트를 사용한다. 윈도우 자동업데이트나 웹 브라우저, 게임 소프트웨어 각각이 포트를 점유하고 있다. 특히 웹 브라우저는 정말 많은 수의 포트를 먹어치운다. 따라서 공유기로 확장할 수 있는 네트워크의 현실적인 규모는 겨우 수백 개 정도에 불과하다. 공유기 아래에 문어발로 물린 다른 공유기가 여러 개 있어도, 그 모든 포트 부담은 공인 IP를 할당받고 있는 최종 단계의 공유기에 다 몰린다. 사설 IP는 수천 수만 개가 사용 가능해질지 몰라도, 공인 IP의 포트가 모자라 통신이 안 되는 것이다. 물론 통신하고 나서 포트를 닫아버리면 다른 프로그램이 포트를 재활용할 수 있긴 하지만 [[프로세스 스케줄링|그런 식의 돌려막기]]도 반응속도 저하 등의 한계가 명백하다. 특히 [[서버]] 용도의 프로그램은 항상 응답대기 상태를 유지해야 하기 때문에 포트를 다이나믹하게 열고 닫는게 매우 힘들다. 또한 클라이언트 프로그램은 항상 약속된 포트 번호를 사용해 서버와 통신을 시도하므로(웹 브라우저는 특별히 포트 번호를 쓰지 않으면 80번 포트(http)나 443포트(https)를 통해 서버와 통신을 시도한다.) 서버는 단 두 대도 IP공유가 힘들다. 이 경우에는 리버스 프록시를 사용하면 된다. 포트 포워딩은 Network Address Translation(NAT) 기법 중 하나로 서버에서만 하는 게 아니다. 서버에서 응답을 줄 때 상대방 IP주소로 패킷을 날리는데, 사설 IP를 여러 대의 클라이언트가 공유하는 [[통신사 IP]]같이, 그 사설 IP가 단 한 대의 클라이언트일 리가 없잖은가. 정말로 서버가 멍청하게 사설IP에다가만 응답 패킷을 날리면 그 패킷은 서버실 바깥으로 나가지 못한다.[* 물론 상단에 물린 공유기의 커버리지가 넓어서 마을이나 아파트 건물, 극단적일 경우 소규모의 행정단위 단위로 사설망이 구축되어있다면 해당 구역 서비스에 대해서는 사설 IP로 날려도 되기는 한다. 하지만 포트 제한이 발목을 잡을 뿐.] 공인 IP로 응답 패킷을 주게 되는데 그게 공유기 아래의 누구의 컴퓨터로 가야 하는지는 공유기만 알 수 있다. 하지만 응답을 날리는 주체는 서버다. 그러면 공유기는 서버한테 어떤 주소로 응답을 날려달라고 요청 패킷 보낼 때 미리 알려줘야 하는데 컴퓨터 식별을 위해 서버에 보낼 수 있는 정보는 딱 하나 있는 IP주소와 6만개 정도 있는 포트 번호뿐. 클라이언트가 요청을 보낼 때는 반송 주소도 같이 적어서 보내는데(안 적어서 보내면 서버 방화벽에서 폐기된다) 그 반송 주소가 192.168.1.22:18442 같은 사설 IP주소이다. 공유기는 이걸 NAT를 통해 자기의 공인 IP주소인 165.246.123.123:53241으로 바꿔서 서버에 날려준다. 그리고 공유기는 자신의 주소 변환 테이블에 165.246.123.123:53241 → 192.168.1.22:18442 라는 정보를 담아놓는다. 서버는 165.246.123.123:53241로 응답 패킷을 날리고 공유기가 이 패킷을 받으면 자신의 주소 변환 테이블을 검색해서 192.168.1.22:18442라는 최종 목적지 주소를 발견하고 패킷을 넘겨(포워딩)준다. 이런 원리로 작동하기 때문에 공유기에 물릴 수 있는 컴퓨터 수가 아무리 많아도 65535개가 되는 것이다. 공유기 자신도 몇 개 써야 하므로 실제로는 더 적다. 더 쉬운 예시를 들자면, 내가 편지를 쓰는데 반송 주소에 적을 수 있는 게 딱 건물 주소하고(공인 IP주소) 사서함번호(1~65535)뿐이라고 해 보자. 편지 답장을 엉뚱한 방에 안 보내기 위해서 그 건물에 입주할 수 있는 입주자의 수는 65535명을 넘을 수 없다. 공유기가 딱 이런 원리다. 위에 언급한 포트 돌려막기로 동시에 사용하지만 않으면 공유기 아래에 65535개가 넘는 컴퓨터를 물릴 수도 있다. 하지만 물릴 수 있다뿐이지 그게 동시에 인터넷을 사용할 수는 없게 된다. 사용이 끝난 포트를 닫고 다른 컴퓨터용으로 재할당하는 [[프로세스 스케줄링|시분할기법]]으로 써야 한다. 아까 NAT주소변환 기법에 대해서 설명한 대로, 이런 식으로 해제와 재할당을 반복하려면 공유기의 [[CPU]]가 정말 무시무시하게 강력해야 한다. 게다가 이건 서버에서는 못 쓰는 방법이고. 이 세상에 컴퓨터가 PC만 있는 게 아님을 명심하자. 물론 기업용 레벨로 가면[* A라는 사설 아이피를 가진 컴퓨터와 B라는 사설 아이피를 가진 컴퓨터에서 인터넷을 통해 신호를 보낸다고 하자. 두 신호가 라우터에 닿으면 A 컴퓨터의 신호를 먼저 인터넷으로 보내고, 그러기 전에 지금은 인터넷으로 A컴퓨터의 신호를 보내고 있다고 맥 어드레스를 로그에 기록한다. 인터넷을 거쳐 서버를 찍고 응답 패킷을 싣고 다시 라우터로 온 신호를 가장 최신 로그에 찍힌 맥 어드레스(지금 인터넷으로 가는 선로가 연결된 컴퓨터의 맥 어드레스)를 가진 A컴퓨터로 보낸다. 이 과정은 실제로는 길어야 몇 밀리세컨드 내에 이루어진다. 이게 한 싸이클이다. A을 위한 한 싸이클이 도는 동안 B에서 출발한 신호는 라우터에 있는 버퍼에서 수 ms (1천분의 몇 초)간 대기한다. 그동안 한 싸이클이 끝나고 A와의 신호를 끊고 B 컴퓨터를 위한 신호를 연결하고 해당 사실을 로그에 기록하고 B 컴퓨터를 위한 싸이클을 돌린다. '''이렇게 무한 반복'''.] 정말로 몇 ms마다 여러 대의 컴퓨터에 인터넷 연결을 빠르게 끊었다 연결했다를 계속 반복해서 한 포트를 여러 대의 컴퓨터가 공용하는 방법도 있기는 한데 버퍼 용량과 라우팅 성능의 한계, 또한 결정적으로 지연시간이 늘어나는 문제가 있어서 곤란하긴 하다.[* 매우 짧은 간격으로 아주 빽빽히 신호를 보내므로, 신호를 전환시키는 라우팅 성능이 낮으면 신호 전환이 너무 오래 걸려서 안 된다. 또한 라우터에 버퍼용량이 충분해야 충분한 패킷을 받을 수 있다. 그리고 결정적으로, 저런 식으로 하면 A,B 모두 인터넷 속도가 지연된다. 네트워크 속도가 정말로 [[광속]]인데다 몇 ms간격으로 매우 빽빽히 송수신하기 때문이다.] 게다가 일부 프로그램은 지연시간이 너무 길어지면 커넥션을 아예 Drop해버린다. 포트 제한에 더해, 1개의 라우터를 거칠때 마다 패킷의 ICMP TTL 값이 1씩 줄어든다. 만약 이 값이 0이되면 패킷은 버려지고 TTL값 초과 메세지가 뜬다. TTL값은 기본적으로 윈도우에서는 128, 리눅스에선 64인데 이 값은 임의로 변경이 가능하다. 최대 255까지 가능.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기